package com.anolesoft.Planexecution.service.impl;

import cn.hutool.core.util.StrUtil;
import com.anolesoft.Planexecution.dto.MesBzzProcessDto;
import com.anolesoft.Planexecution.dto.StoragPlanDto;
import com.anolesoft.Planexecution.entity.MesBzzOrderDo;
import com.anolesoft.Planexecution.mapper.MesBzzOrderMapper;
import com.anolesoft.Planexecution.mapper.StoragPlanMapper;
import com.anolesoft.Planexecution.service.StoragPlanService;
import com.anolesoft.amljmes.fortyone.service.mapper.StfEmployeeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class StoragPlanServiceImpl implements StoragPlanService {

    @Autowired
    StoragPlanMapper storagPlanMapper;
    @Autowired
    StfEmployeeMapper stfEmployeeMapper;
    @Autowired
    MesBzzOrderMapper mesBzzOrderMapper;

    @Override
    public int queryEmpAll(String eid, String fcode) {
        return storagPlanMapper.queryEmpAll(eid,fcode);
    }

    @Override
    public int queryEmpAll2(String password2, String fcode) {
        return storagPlanMapper.queryEmpAll2(password2,fcode);
    }

    @Override
    public List<StoragPlanDto> queryAll(StoragPlanDto storagPlanDto) {
        return storagPlanMapper.queryAll(storagPlanDto);
    }

    /**
     * 删除计划
     * @param orderDo
     * @return
     */
    @Override
    public int update(MesBzzOrderDo orderDo) {
        storagPlanMapper.updateFcfhjh(orderDo);
        return storagPlanMapper.update(orderDo);
    }

    @Override
    public int insert(MesBzzOrderDo orderDo) {
        return storagPlanMapper.insert(orderDo);
    }

    @Override
    public List<MesBzzProcessDto> quaryProcess(String objuid) {
        List<MesBzzProcessDto> dtos = storagPlanMapper.quaryProcess(objuid);
        for (int i = 0; i < dtos.size(); i++) {
            MesBzzProcessDto dto = dtos.get(i);
//            dto.setJianyanyuanName(dto.getOperator()+ "(" +dto.getOperatortime() + ")");
//            dto.setMonitor(dto.getOperator()+ "(" +dto.getOperatortime() + ")");
//            dto.setOperatorName(dto.getOperator()+ "(" +dto.getOperatortime() + ")");
            if (dto.getOperator() != null){
                dto.setOperatorName(dto.getOperator() + "(" +dto.getOperatortime() + ")");
            }
            if (dto.getMonitorobjuid() != null){
                if (dto.getMonitorobjuid().equals("N/A")) {
                    dto.setMonitor(dto.getMonitorobjuid());
                } else {
                    dto.setMonitor(dto.getMonitorobjuid() + "(" +dto.getMonitortime() + ")");
                }
            }
            if (dto.getJianyanyuan() != null){
                if (dto.getJianyanyuan().equals("N/A")) {
                    dto.setJianyanyuanName(dto.getJianyanyuan());
                } else {
                    dto.setJianyanyuanName(dto.getJianyanyuan() + "(" +dto.getInspectiontime() + ")");
                }
            }
            dto.setIsCanPut(false);
            if (i == 0) {
                if (dto.getState() == 0) {
                    dto.setIsCanPut(true);
                }
            }
            if (i > 0) {
                //获取上一步工序
                MesBzzProcessDto dto1 = dtos.get(i - 1);
                if (dto1.getState() == 1 && dto.getState() == 0) {
                    dto.setIsCanPut(true);
                }
            }

        }

        return dtos;
    }



    @Override
    public int updateOperator(MesBzzProcessDto mesBzzProcessDto) {
        return storagPlanMapper.updateOperator(mesBzzProcessDto);
    }

    @Transactional
    @Override
    public List<MesBzzProcessDto> selectAll(MesBzzProcessDto mesBzzProcessDto) {

        List<MesBzzProcessDto> dtos = storagPlanMapper.selectAll(mesBzzProcessDto);

        for (int i = 0; i < dtos.size(); i++) {
            MesBzzProcessDto dto = dtos.get(i);
            if (dto.getOperator() != null){
                dto.setOperatorName(dto.getOperator() + "(" +dto.getOperatortime() + ")");
            }
//            if (dto.getMonitorobjuid() != null){
//                dto.setMonitor(dto.getMonitorobjuid() + "(" +dto.getMonitortime() + ")");
//            }
//            if (dto.getJianyanyuan() != null){
//                dto.setJianyanyuanName(dto.getJianyanyuan() + "(" +dto.getInspectiontime() + ")");
//            }
            if (dto.getMonitorobjuid() != null){
                if (dto.getMonitorobjuid().equals("N/A")) {
                    dto.setMonitor(dto.getMonitorobjuid());
                } else {
                    dto.setMonitor(dto.getMonitorobjuid() + "(" +dto.getMonitortime() + ")");
                }
            }
            if (dto.getJianyanyuan() != null){
                if (dto.getJianyanyuan().equals("N/A")) {
                    dto.setJianyanyuanName(dto.getJianyanyuan());
                } else {
                    dto.setJianyanyuanName(dto.getJianyanyuan() + "(" +dto.getInspectiontime() + ")");
                }
            }

            if (!StrUtil.isEmpty(dto.getOperator()) && !StrUtil.isEmpty(dto.getMonitorobjuid()) && !StrUtil.isEmpty(dto.getJianyanyuan())){
                dto.setState(1);
                storagPlanMapper.updateState(dto);
            }
            if (i == dtos.size()-1 && !StrUtil.isEmpty(dto.getOperator()) && !StrUtil.isEmpty(dto.getMonitorobjuid()) && !StrUtil.isEmpty(dto.getJianyanyuan())){

                mesBzzOrderMapper.updateOrderState(dto);
            }
            dto.setIsCanPut(false);
            if (i == 0) {
                if (dto.getState() == 0) {
                    dto.setIsCanPut(true);
                    mesBzzOrderMapper.updateOrderState1(dto);
                }
            }
            if (i > 0) {
                //获取上一步工序
                MesBzzProcessDto dto1 = dtos.get(i - 1);
                if (dto1.getState() == 1 && dto.getState() == 0) {
                    dto.setIsCanPut(true);
                }
            }

        }

        return dtos;
    }

    @Override
    public int updateMonitorobjuid(MesBzzProcessDto mesBzzProcessDto) {
        return storagPlanMapper.updateMonitorobjuid(mesBzzProcessDto);
    }

    @Override
    public int updateJianyanyuan(MesBzzProcessDto mesBzzProcessDto) {
        return storagPlanMapper.updateJianyanyuan(mesBzzProcessDto);
    }

    @Override
    public List<StoragPlanDto> queryRow(List<String> objuids) {
        return storagPlanMapper.queryRow(objuids);
    }


}
